<?php

    /*
    * 支付接口类
    */
    class uuch_pay
    {
        /*
         * 支付
         */
        public static function pay($paytype,$paycode,$tilte,$body,$fee){            
            
            if($paytype==1){
                $payUrl=uuch_pay::tenPay($paycode,$tilte,$body,$fee);
            }
            else{
                $payUrl=uuch_pay::aliPay($paycode,$tilte,$body,$fee);
            }
            header("location:".$payUrl);
        }
        
        /*
         * 支付支付
         */
        public static function aliPay($sendPaycode,$sendTilte,$sendBody,$sendFee){
            
            if(!$sendPaycode && !$sendTilte && !$sendBody && !$sendFee) return "";
            
            require_once(APPLICATION_PATH.'/configs/alipay.config.php');//
            require_once(APPLICATION_PATH . '/../library/pay/alipay/alipay_service.class.php');
            /**************************请求参数**************************/

            //必填参数//
            $special = array('\\', '~', '@', '#', '￥', '%', '^', '$', '&', '*', '{', '}');

            //请与贵网站订单系统中的唯一订单号匹配
            $out_trade_no = $sendPaycode;
            //订单名称，显示在支付宝收银台里的"商品名称"里，显示在支付宝的交易管理的"商品名称"的列表里。
            $subject      = $sendTilte;
            //订单描述、订单详细、订单备注，显示在支付宝收银台里的"商品描述"里
            $body         = $sendBody;
            //订单总金额，显示在支付宝收银台里的"应付总额"里
            $total_fee    = $sendFee;

            //扩展功能参数——默认支付方式//
            //默认支付方式，取值见"即时到帐接口"技术文档中的请求参数列表
            $paymethod    = '';
            //默认网银代号，代号列表见"即时到帐接口"技术文档"附录"→"银行列表"
            $defaultbank  = '';


            //扩展功能参数——防钓鱼//

            //防钓鱼时间戳
            $anti_phishing_key  = '';
            //获取客户端的IP地址，建议：编写获取客户端IP地址的程序
            $exter_invoke_ip = '';
            //注意：
            //1.请慎重选择是否开启防钓鱼功能
            //2.exter_invoke_ip、anti_phishing_key一旦被使用过，那么它们就会成为必填参数
            //3.开启防钓鱼功能后，服务器、本机电脑必须支持SSL，请配置好该环境。
            //示例：
            //$exter_invoke_ip = '202.1.1.1';
            //$ali_service_timestamp = new AlipayService($aliapy_config);
            //$anti_phishing_key = $ali_service_timestamp->query_timestamp();//获取防钓鱼时间戳函数


            //扩展功能参数——其他//
            //商品展示地址，要用 http://格式的完整路径，不允许加?id=123这类自定义参数
            $show_url			= '';//'http://www.xxx.com/order/myorder.php';
            //自定义参数，可存放任何内容（除=、&等特殊字符外），不会显示在页面上
            $extra_common_param = '';

            //扩展功能参数——分润(若要使用，请按照注释要求的格式赋值)
            $royalty_type		= "";			//提成类型，该值为固定值：10，不需要修改
            $royalty_parameters	= "";
            //注意：
            //提成信息集，与需要结合商户网站自身情况动态获取每笔交易的各分润收款账号、各分润金额、各分润说明。最多只能设置10条
            //各分润金额的总和须小于等于total_fee
            //提成信息集格式为：收款方Email_1^金额1^备注1|收款方Email_2^金额2^备注2
            //示例：
            //royalty_type 		= "10"
            //royalty_parameters= "111@126.com^0.01^分润备注一|222@126.com^0.01^分润备注二"
            /************************************************************/

            //构造要请求的参数数组
            $parameter = array(
                            "service"			=> "create_direct_pay_by_user",
                            "payment_type"		=> "1",

                            "partner"			=> trim($aliapy_config['partner']),
                            "_input_charset"	=> trim(strtolower($aliapy_config['input_charset'])),
                            "seller_email"		=> trim($aliapy_config['seller_email']),
                            "return_url"		=> trim($aliapy_config['return_url']),
                            "notify_url"		=> trim($aliapy_config['notify_url']),

                            "out_trade_no"		=> $out_trade_no,
                            "subject"			=> $subject,
                            "body"				=> $body,
                            "total_fee"			=> $total_fee,

                            "paymethod"			=> $paymethod,
                            "defaultbank"		=> $defaultbank,

                            "anti_phishing_key"	=> $anti_phishing_key,
                            "exter_invoke_ip"	=> $exter_invoke_ip,

                            "show_url"			=> $show_url,
                            "extra_common_param"=> $extra_common_param,

                            "royalty_type"		=> $royalty_type,
                            "royalty_parameters"=> $royalty_parameters
            );

            //构造即时到帐接口
            $alipayService = new AlipayService($aliapy_config);
            //$html_text = $alipayService->create_direct_pay_by_user($parameter);
            $payUrl = $alipayService->create_url_pay_by_user($parameter);
            
            return $payUrl;
        }
        
        /*
         * 财富通支付
         */
        public static function tenPay($sendPaycode,$sendTilte,$sendBody,$sendFee){
            
            if(!$sendPaycode && !$sendTilte && !$sendBody && !$sendFee) return 0;
            
            require_once(APPLICATION_PATH.'/configs/tenpay_config.php');//
            require_once(APPLICATION_PATH . '/../library/pay/tenpay/RequestHandler.class.php');

            //必填参数//
            $special = array('\\', '~', '@', '#', '￥', '%', '^', '$', '&', '*', '{', '}');

            //请与贵网站订单系统中的唯一订单号匹配
            $out_trade_no = $sendPaycode;
            //订单名称，显示在收银台里的"商品名称"里，显示在交易管理的"商品名称"的列表里。
            $subject      = iconv('UTF-8', 'GBK', $sendTilte);
            //订单描述、订单详细、订单备注，显示在收银台里的"商品描述"里
            $body         = iconv('UTF-8', 'GBK', str_ireplace($special, '', $sendBody));
            //订单总金额，显示在收银台里的"应付总额"里
            $total_fee    = $sendFee * 100;


            /* 创建支付请求对象 */
            $reqHandler = new RequestHandler();
            $reqHandler->init();
            $reqHandler->setKey($key);
            $reqHandler->setGateUrl("https://gw.tenpay.com/gateway/pay.htm");

            //----------------------------------------
            //设置支付参数 
            //----------------------------------------
            $reqHandler->setParameter("partner", $partner);
            $reqHandler->setParameter("out_trade_no", $out_trade_no);
            $reqHandler->setParameter("total_fee", $total_fee);  //总金额
            $reqHandler->setParameter("return_url",  $return_url);
            $reqHandler->setParameter("notify_url", $notify_url);
            $reqHandler->setParameter("body", $subject);
            $reqHandler->setParameter("bank_type", "DEFAULT");  	  //银行类型，默认为财付通
            //用户ip
            $reqHandler->setParameter("spbill_create_ip", $_SERVER['REMOTE_ADDR']);//客户端IP
            $reqHandler->setParameter("fee_type", "1");               //币种
            $reqHandler->setParameter("subject", $body);          //商品名称，（中介交易时必填）

            //系统可选参数
            $reqHandler->setParameter("sign_type", "MD5");  	 	  //签名方式，默认为MD5，可选RSA
            $reqHandler->setParameter("service_version", "1.0"); 	  //接口版本号
            $reqHandler->setParameter("input_charset", "GBK");   	  //字符集
            $reqHandler->setParameter("sign_key_index", "1");    	  //密钥序号

            //业务可选参数
            $reqHandler->setParameter("attach", "");             	  //附件数据，原样返回就可以了
            $reqHandler->setParameter("product_fee", "");        	  //商品费用
            $reqHandler->setParameter("transport_fee", "0");      	  //物流费用
            $reqHandler->setParameter("time_start", date("YmdHis"));  //订单生成时间
            $reqHandler->setParameter("time_expire", "");             //订单失效时间
            $reqHandler->setParameter("buyer_id", "");                //买方财付通帐号
            $reqHandler->setParameter("goods_tag", "");               //商品标记
            $reqHandler->setParameter("trade_mode","1");              //交易模式（1.即时到帐模式，2.中介担保模式，3.后台选择（卖家进入支付中心列表选择））
            $reqHandler->setParameter("transport_desc","");              //物流说明
            $reqHandler->setParameter("trans_type","1");              //交易类型
            $reqHandler->setParameter("agentid","");                  //平台ID
            $reqHandler->setParameter("agent_type","");               //代理模式（0.无代理，1.表示卡易售模式，2.表示网店模式）
            $reqHandler->setParameter("seller_id","");                //卖家的商户号



            //请求的URL
            $reqUrl = $reqHandler->getRequestURL();

            //获取debug信息,建议把请求和debug信息写入日志，方便定位问题
            /**/
            //$debugInfo = $reqHandler->getDebugInfo();
            //echo "<br/>" . $reqUrl . "<br/>";
            //echo "<br/>" . $debugInfo . "<br/>";

            //$this->_helper->getHelper('Redirector')->gotoUrl($reqUrl);
            return $reqUrl;
        }
        
        /*
         * 支付宝回调处理
         * $type:类型：notify:异步
         *            return 同步
         * $out_trade_no:订单号
         * $trade_no:交易流水号
         * $total_fee:金额
         */
        public static function alinotify($type, $out_trade_no, $trade_no, $total_fee) {
            
        }
        
        /*
         * 财富通回调处理
         * $type:类型：notify:异步
         *            return 同步
         * $out_trade_no:订单号
         * $trade_no:交易流水号
         * $total_fee:金额
         */
        public static function tennotify($type, $out_trade_no, $trade_no, $total_fee) {
            
        }
        
        public static function statusFailure($type, $out_trade_no, $trade_status)
	{
                
	}
	
	public static function verifyFailure($page, $out_trade_no)
	{
	}
    }

?>
